package tunnel

import "fmt"

// ProtocolType 协议类型
type ProtocolType uint8

const (
	ProtocolHTTP ProtocolType = 1 // HTTP协议
	ProtocolTCP  ProtocolType = 2 // TCP协议（预留）
	ProtocolSSH  ProtocolType = 3 // SSH协议（预留）
	ProtocolRDP  ProtocolType = 4 // RDP协议（预留）
)

// String 返回协议类型的字符串表示
func (p ProtocolType) String() string {
	switch p {
	case ProtocolHTTP:
		return "HTTP"
	case ProtocolTCP:
		return "TCP"
	case ProtocolSSH:
		return "SSH"
	case ProtocolRDP:
		return "RDP"
	default:
		return fmt.Sprintf("Unknown(%d)", p)
	}
}

// Validate 验证协议类型是否有效
func (p ProtocolType) Validate() error {
	switch p {
	case ProtocolHTTP, ProtocolTCP, ProtocolSSH, ProtocolRDP:
		return nil
	default:
		return fmt.Errorf("无效的协议类型: %d", p)
	}
}

